﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using NHibernate;

namespace MoroMoro.Samples.ToDoList.Base.Persistence.NHibernate
{
    /// <summary>
    /// NHibernate を利用して実装される作業スペースのファクトリの基本クラスです。
    /// </summary>
    public abstract class NWorkspaceFactoryBase : IWorkspaceFactory
    {
        /// <summary>
        /// 作業スペースを生成します。
        /// </summary>
        /// <returns>作業スペース。</returns>
        public IWorkspace Create()
        {
            var sessionFactory = GetSessionFactory();
            return new NWorkspace(sessionFactory);
        }

        /// <summary>
        /// NHibernate セッションファクトリを取得します。
        /// </summary>
        /// <returns>NHibernate セッションファクトリ。</returns>
        protected abstract ISessionFactory GetSessionFactory();
    }
}
